.text
.section .rodata
.LC0:
	.string	"varr[1] = %d\n"

// 还是自己写吧，生成的实在不咋啃得动，好在变长数组不是编译器必须实现的
.text
.globl main
.type main, @function
main:
    addi sp, sp, -40
    sd ra, 24(sp)
    sd s0, 16(sp)
    addi s0, sp, 16

    // i: -4(s0)
    // sz: -8(s0)
    // varr: -16(s0) 其值尚不知道
    // -24(s0) 存为sp的值
    sd sp, -24(s0)

    li a5, 10
    sw a5, -8(s0) /* sz*/
    slli a5, a5, 2
    mv a4, a5

    li a6, -16
    and a5, a5, a6
    beq a5, zero, .NOTNEEDADD
    addi a4, a4, 16
.NOTNEEDADD:
    and a5, a4, a6
    sub sp, sp, a5
    sd sp, -16(s0) /* vaddr*/

    // for循环开始
    sw zero, -4(s0) /* i */
    j .FOR_COMPARE
.FOR_ENTER:
    lw a5, -4(s0) /* i */
    mv a4, a5
    addiw a5, a5, 1
    slli a4, a4, 2
    ld a6, -16(s0) /* vaddr*/
    add a6, a4, a6
    sw a5, (a6)

    lw a5, -4(s0) /* i */
    addiw a5, a5, 1
    sw a5, -4(s0) /* i */
.FOR_COMPARE:
    lw a5, -4(s0) /* i */
    sext.w a5, a5
    lw a4, -8(s0) /* sz*/
    sext.w a4, a4
    blt a5, a4, .FOR_ENTER

    ld a5, -16(s0) /* vaddr*/
    addi a5, a5, 4
    lw a1, (a5)
    lui a5, %hi(.LC0)
    addi a0, a5, %lo(.LC0)
    call printf

    ld sp, -24(s0)
    ld ra, 24(sp)
    ld s0, 16(sp)
    addi sp, sp, 32
    jr ra